In [1]:
%pylab inline

from IPython.core.display import HTML
Populating the interactive namespace from numpy and matplotlib
In [2]:
HTML('''<script>
code_show=true;
function code_toggle() {
 if (code_show){
 $('div.input').hide();
 } else {
 $('div.input').show();
 }
 code_show = !code_show
}
$( document ).ready(code_toggle);
</script>
<form action="javascript:code_toggle()"><input type="submit"
value="Click here to toggle on/off the raw code."></form>''')
Out[2]:
In [3]:
rc('text', usetex=True)  # az abran a xticks, yticks fontjai LaTeX fontok lesznek 
In [4]:
#from sympy.mpmath import *
import mpmath as mpmath
In [5]:
from scipy.integrate import * # az integráló rutinok betöltése
from ipywidgets import *  # az interaktivitásért felelős csomag
from scipy.integrate import quad as scipy_quad
from scipy.special import gamma as scipy_gamma
import matplotlib.pyplot as plt
In [6]:
def fsz(s,z,cutoff=300):
    '''
    Numerical integration based alternative to sympy built in symbolic based Fermi integral
    practically suited for large arguments.
    '''
    y, err = scipy_quad(lambda x,s,z : x**(s-1)*z/(exp(x)+z) , 0, cutoff, args=(s,z))
    return y/scipy_gamma(s)
In [7]:
# Abra es fontmeretek
xfig_meret= 9   #    12 nagy abrahoz
yfig_meret= 6    #   12 nagy abrahoz
xyticks_meret= 15  #  20 nagy abrahoz
xylabel_meret= 21  #  30 nagy abrahoz
legend_meret= 21   #  30 nagy abrahoz

Ideális Fermi-gáz

(Cserti József, ELTE Komplex Rendszerek Fizikája Tanszék, 2017. március)

Néhány alapvető formula:

Fermi-Dirac integrál:

\begin{align} f_{s}(z) &=\frac{1}{\Gamma(s)}\,\intop_{0}^{\infty}\frac{x^{s-1}dx}{\frac{1}{z}e^{x}+1}\label{eq:g_s_z}. \end{align}

A $f_s(z)$ függvény kifejezhető az irodalomban ismert $Li_s(z)$ polylogaritmus függvénnyel (Polylogarithm function):

\begin{align} \label{eq:Li_def} f_{s}(z) &\equiv -Li_s(-z) = -\sum_{k=1}^\infty \, \frac{(-z)^k}{k^s}=z- \frac{z^2}{2^s} + \frac{z^3}{3^s} + \dots \end{align}

A hőmérséklet és a kémiai potenciál (pontosabban a $z = e^{\beta \mu}$ fugacitás) közti kapcsolat:

\begin{equation} \frac{T}{T_{\mathrm{F}}} =\left(\frac{4}{3\sqrt{\pi} \,f_{3/2}(z)}\right)^{2/3}\; \mathrm{\acute{e}s} \,\, 0\leq z \le \infty \end{equation}

Az $f_s(z)$ függvény:

In [8]:
Npoint =50
zmax =10

zlist=linspace(0,zmax,Npoint) #mintavételezési pontok legyártása

f3p2=[]
f5p2=[]

for zz in zlist:
    #poly1=mpmath.polylog(1.5,1)
    poly2=-(mpmath.polylog(1.5,-zz)).real
    poly3=-(mpmath.polylog(2.5,-zz)).real
    
    f3p2.append(poly2)
    f5p2.append(poly3)
    
In [9]:
figsize(xfig_meret,yfig_meret)
plot(zlist,f3p2,label='$f_{3/2}(z)$',lw=3,color='red'),
plot(zlist,f5p2,label='$f_{5/2}(z)$',lw=3,color='blue',ls='--')
legend(loc='upper left',fontsize=legend_meret)

xlabel('$z$',fontsize=xylabel_meret)
ylabel('$f_{3/2}(z), f_{5/2}(z)$',fontsize=xylabel_meret);
xticks(fontsize=xyticks_meret)
yticks(fontsize=xyticks_meret);

xlim(0,9.4)
ylim(0,5.4)
grid()

#savefig('Fig_Fermi_gas/fig_Fermi-gaz_10.eps');  # Abra kimentese

Az alábbiakban az $N$ részecskeszám rögzített.

A kémiai potenciál hőmérsékletfüggése:

\begin{align} & \frac{\mu}{k_{\mathrm{B}}T_{\mathrm{F}}} =\frac{T}{T_{\mathrm{F}}}\,\ln(z),\\[2ex] & \frac{\mu}{k_{\mathrm{B}}T_{\mathrm{F}}}\approx 1-\frac{\pi^2}{12} \left(\frac{T}{T_{\mathrm{F}}}\right)^2, \; T \, \ll \, T_{\mathrm{F}} . \end{align}
In [10]:
Npoint =500
logzmax=27
logzmin=-1

#zlist=linspace(zmin,zmax,Npoint) #mintavételezési pontok legyártása
zlist=logspace(logzmin,logzmax,num=Npoint) #  z in logaritmic scale

Tlist=[]
mu=[]

for i in range(0,len(zlist)):
    z=zlist[i]
    
    try:
        poly3p2=-float(mpmath.polylog(1.5,-z).real)
        poly5p2=-float(mpmath.polylog(2.5,-z).real)
    except:
        poly3p2=fsz(1.5,z)
        poly5p2=fsz(2.5,z)
    #poly1p2=-float(mpmath.polylog(0.5,-z).real)      
    
    tt=(4/3/(sqrt(pi))/poly3p2)**(2/3) 
    #print(z,tt)
    Tlist.append(tt)    #   homerseklet
     
    mu.append(tt * log(z))   #  kemiai potencial
    
#  Low temperature approximation 

Npoint =30
tmaxL=0.5
Tlist_Low=linspace(0.0,tmaxL,Npoint) #mintavételezési pontok legyártása

mulist_approxL=[]

for i in range(0,len(Tlist_Low)):
    
    tt=Tlist_Low[i]    
    mulist_approxL.append(1-pi**2/12 *tt**2 )    # kemiai potencial
    
In [11]:
figsize(xfig_meret,yfig_meret)
legend_meret1=0.8*legend_meret

plot(Tlist_Low,mulist_approxL,label=r'$\frac{\mu(T)}{k_B T_\mathrm{F}} \approx 1-\frac{\pi^2}{12}\, t^2, \,\, T \ll T_\mathrm{F}$',lw=1,ls='-',marker='o',color='blue',markersize=4)
plot(Tlist,mu,label=r'$\frac{\mu(T)}{k_B T_\mathrm{F}}$',lw=3,color='red')

legend(loc='lower left',fontsize=legend_meret1)

annotate(r'$\mu_{k\ddot {o}z}$'
         ,xy=(1.9,-1.2),  xytext=(1.2, -2.5), arrowprops=dict(color='green',width=.5),fontsize=legend_meret)

xlabel('$t={T}/{T_\mathrm{F}}$',fontsize=xylabel_meret)
ylabel(r'$\frac{\mu(T)}{k_B T_\mathrm{F}}$',fontsize=xylabel_meret,rotation ='horizontal') 
# Kell a 'r' az elejen!!!!
xticks(fontsize=xyticks_meret)
yticks(fontsize=xyticks_meret);

xlim(0,1.15)
ylim(-0.5,1.15)
ax = gca()
ax.yaxis.set_label_coords(-.1, 0.53);  #  ylabel position 
grid()

#savefig('Fig_Fermi_gas/fig_Fermi-gaz_15.eps');  # Abra kimentese

Az energia hőmérsékletfüggése:

\begin{equation} E(T)=\begin{cases} \frac{3}{2}\, Nk_{\mathrm{B}}T_{\mathrm{F}}\, \frac{T}{T_{\mathrm{F}}}\, \frac{f_{5/2}(z)}{f_{3/2}(z)}, \\[2ex] \frac{3}{2}\, Nk_{\mathrm{B}}T_{\mathrm{F}}\, \left[1+\frac{5\pi^2}{12} {\left(\frac{T}{T_{\mathrm{F}}}\right)}^2 \right], \quad \mathrm{ha} \quad T\, \ll \, T_{\mathrm{F}} . \end{cases} \end{equation}
In [12]:
Npoint =500
logzmax=27
logzmin=-1

#zlist=linspace(zmin,zmax,Npoint) #mintavételezési pontok legyártása
zlist=logspace(logzmin,logzmax,num=Npoint) #  z in logaritmic scale


Tlist=[]
Elist=[]
for i in range(0,len(zlist)):
    z=zlist[i]
    
    try:
        poly3p2=-float(mpmath.polylog(1.5,-z).real)
        poly5p2=-float(mpmath.polylog(2.5,-z).real)
    except:
        poly3p2=fsz(1.5,z)
        poly5p2=fsz(2.5,z)
    #poly1p2=-float(mpmath.polylog(0.5,-z).real)      
    
    tt=(4/3/(sqrt(pi))/poly3p2)**(2/3) 
    #print(z,tt)
    Tlist.append(tt)    #   homerseklet   
    tmp2=3/2*tt*poly5p2/poly3p2  # energia
    Elist.append(tmp2)     

    
#  Low temperature approximation 

Npoint =30
tmaxL=0.4
Tlist_Low=linspace(0.0,tmaxL,Npoint) #mintavételezési pontok legyártása

Elist_approxL=[]

for i in range(0,len(Tlist_Low)):
    
    tt=Tlist_Low[i]    
    Elist_approxL.append(3/5*(1+5*pi**2/12 *tt**2 ))    # energia
    
#  High temperature approximation 

Npoint =30
tminH=0.2
tmaxH=Tlist[0]

Tlist_High=linspace(tminH,tmaxH,Npoint) #mintavételezési pontok legyártása
Elist_approxH=[]

for i in range(0,len(Tlist_High)):
    
    tt=Tlist_High[i]
    Elist_approxH.append(1/2/sqrt(2*pi*tt)+3/2*tt)    # energia
    
In [13]:
figsize(xfig_meret,yfig_meret)

plot(Tlist,Elist,label='$E(T)$',lw=3,color='red',ls='-')
plot(Tlist_Low,Elist_approxL,
     label=r'$E_\mathrm{low}(t) \approx \frac{3}{5}\,\left(1+\frac{5\pi^2}{12} \, t^2 \right)$',
     lw=1,ls='-',marker='o',color='blue',markersize=4)
plot(Tlist_High,Elist_approxH,color='green',
     lw=3,linestyle='--',
     label=r'$E_\mathrm{high}(t) \approx \frac{3t}{2}+\frac{1}{2\sqrt{2\pi}}\, \frac{1}{\sqrt{t}}$')

legend(loc='lower right',fontsize=legend_meret);

xlabel('$t={T}/{T_\mathrm{F}}$',fontsize=xylabel_meret)
ylabel(r'$\frac{E}{N k_B T_\mathrm{F}}$',fontsize=xylabel_meret,rotation ='horizontal')  # Kell a 'r' az elejen!!!!
xticks(fontsize=xyticks_meret)
yticks(fontsize=xyticks_meret);

xlim(0,1.22)
ylim(0,2.15)
ax = gca()
ax.yaxis.set_label_coords(-.1, 0.65);  #  ylabel position 
#title(r'$E(T)$ ', fontsize=20)
grid()

#savefig('Fig_Fermi_gas/fig_Fermi-gaz_20.eps');  # Abra kimentese

Az entrópia hőmérsékletfüggése:

\begin{equation} \frac{S(T)}{Nk_{\mathrm{B}}}=\begin{cases} \frac{5}{2}\:\frac{f_{5/2}(z)}{f_{3/2}(z)}-\mathrm{ln}(z), \\[2ex] \frac{\pi^2}{2}\, \frac{T}{T_{\mathrm{F}}}, \,\, T \ll T_{\mathrm{F}}. \end{cases} \end{equation}
In [14]:
Npoint =500
logzmax=27
logzmin=-1

#zlist=linspace(zmin,zmax,Npoint) #mintavételezési pontok legyártása
zlist=logspace(logzmin,logzmax,num=Npoint)  #  z in logaritmic scale

Tlist=[]
Slist=[]

for i in range(0,len(zlist)):
    z=zlist[i]
    
    try:
        poly3p2=-float(mpmath.polylog(1.5,-z).real)
        poly5p2=-float(mpmath.polylog(2.5,-z).real)
    except:
        poly3p2=fsz(1.5,z)
        poly5p2=fsz(2.5,z)
        
    #poly1p2=-float(mpmath.polylog(0.5,-z).real)       
    
    tt=(4/3/(sqrt(pi))/poly3p2)**(2/3) 
    Tlist.append(tt)    #   homerseklet
    Slist.append(5/2*poly5p2/poly3p2-log(z))        # entropia
    
#  Low temperature approximation 

Npoint =30
tmaxL=0.4
Tlist_Low=linspace(0.0,tmaxL,Npoint) #mintavételezési pontok legyártása

Slist_approxL=[]

for i in range(0,len(Tlist_Low)):
    
    tt=Tlist_Low[i]    
    Slist_approxL.append(pi**2/2 *tt )    # entropia

#  High temperature approximation 

Npoint =30
tminH=0.5
tmaxH=Tlist[0]

Tlist_High=linspace(tminH,tmaxH,Npoint) #mintavételezési pontok legyártása
S_approxH=[]

for i in range(0,len(Tlist_High)):
    
    tt=Tlist_High[i]
    
    ### S high meg nem jo !!!!!
    #S_approxH.append(3/2*log(tt) +1/6/sqrt(2*pi)*tt**(-3/2))    # S entropia
    
In [15]:
figsize(xfig_meret,yfig_meret)
legend_meret1=0.8*legend_meret

plot(Tlist_Low,Slist_approxL,label=r'$S(T) \approx \frac{\pi^2}{2}\, t, \,\, T \ll T_\mathrm{F}$',
     lw=1,ls='-',marker='o',color='blue',markersize=4)
plot(Tlist,Slist,label='$S(T)$',lw=3,color='red')
#plot(Tlist_High,cV_approxH,color='green',
#     lw=3,linestyle='--',
#     label=r'$S_{\mathrm{high}}(t) \approx \frac{3}{2}-\frac{t^{-3/2}}{4\sqrt{2\pi}}$')

legend(loc='lower right',fontsize=legend_meret1)

xlabel(r'$t={T}/{T_\mathrm{F}}$',fontsize=xylabel_meret)
ylabel(r'$\frac{S(T)}{k_B T_\mathrm{F}}$',fontsize=xylabel_meret,rotation ='horizontal') 
# Kell a 'r' az elejen!!!!
xticks(fontsize=xyticks_meret)
yticks(fontsize=xyticks_meret)


xlim(0,1.02)
ylim(0,3.057)

ax = gca()
ax.yaxis.set_label_coords(-.1, 0.53);  #  ylabel position 
grid()

#savefig('Fig_Fermi_gas/fig_Fermi-gaz_35.eps');  # Abra kimentese

Az állandó térfogaton vett fajhő hőmérsékletfüggése:

\begin{equation} \frac{C_{V}(T)}{Nk_{\mathrm{B}}}=\begin{cases} \frac{15}{4}\,\frac{f_{5/2}(z)}{f_{3/2}(z)}-\frac{9}{4}\,\frac{f_{3/2}(z)}{f_{1/2}(z)}, \\[2ex] \frac{\pi^2}{2}\, \frac{T}{T_{\mathrm{F}}}, \,\, T \ll T_{\mathrm{F}}. \end{cases} \end{equation}
In [16]:
Npoint =500
logzmax=27
logzmin=-1

#zlist=linspace(zmin,zmax,Npoint) #mintavételezési pontok legyártása
zlist=logspace(logzmin,logzmax,num=Npoint)  #  z in logaritmic scale

Tlist=[]
cV=[]

for i in range(0,len(zlist)):
    z=zlist[i]
    
    try:
        poly3p2=-float(mpmath.polylog(1.5,-z).real)
        poly5p2=-float(mpmath.polylog(2.5,-z).real)
        poly1p2=-float(mpmath.polylog(.5,-z).real)
    except:
        poly1p2=fsz(.5,z)
        poly3p2=fsz(1.5,z)
        poly5p2=fsz(2.5,z)  
    
    tt=(4/3/(sqrt(pi))/poly3p2)**(2/3) 
    Tlist.append(tt)    #   homerseklet
    cV.append(15/4*poly5p2/poly3p2-9/4*poly3p2/poly1p2)   #  c_V fajfo
    
#  Low temperature approximation 

Npoint =30
tmaxL=0.25
Tlist_Low=linspace(0.0,tmaxL,Npoint) #mintavételezési pontok legyártása

cV_approxL=[]

for i in range(0,len(Tlist_Low)):
    
    tt=Tlist_Low[i]    
    cV_approxL.append(pi**2/2 *tt )     # c_V fajho
    
#  High temperature approximation 

Npoint =30
tminH=0.5
tmaxH=Tlist[0]

Tlist_High=linspace(tminH,tmaxH,Npoint) #mintavételezési pontok legyártása
cV_approxH=[]

for i in range(0,len(Tlist_High)):
    
    tt=Tlist_High[i]
    cV_approxH.append(3/2-tt**(-3/2)/4/sqrt(2*pi))    # c_V fajho
    
In [17]:
figsize(xfig_meret,yfig_meret)

plot(Tlist,cV,label='$C_V(T)$',lw=3,color='red',ls='-')
plot(Tlist_Low,cV_approxL,
     label=r'$C_{V,\mathrm{low}}(t) \approx \frac{\pi^2}{2} \, t $',
     lw=1,ls='-',marker='o',color='blue',markersize=4)
plot(Tlist_High,cV_approxH,color='green',
     lw=3,linestyle='--',
     label=r'$C_{V,\mathrm{high}}(t) \approx \frac{3}{2}-\frac{t^{-3/2}}{4\sqrt{2\pi}}$')

legend(loc='lower right',fontsize=legend_meret)

xlabel('$t={T}/{T_\mathrm{F}}$',fontsize=xylabel_meret)
ylabel(r'$\frac{C_V}{N k_B}$',fontsize=xylabel_meret,rotation ='horizontal')  # Kell a 'r' az elejen!!!!
xticks(fontsize=xyticks_meret)
yticks(fontsize=xyticks_meret);

#xlim(0,tmaxH)
xlim(0,2.5)
ylim(0,1.5)
ax = gca()
ax.yaxis.set_label_coords(-.1, 0.53)  #  ylabel position 
grid()

#savefig('Fig_Fermi_gas/fig_Fermi-gaz_40.eps');  # Abra kimentese

Az állandó nyomáson vett fajhő hőmérsékletfüggése:

\begin{equation} \frac{C_{p}(T)}{Nk_{\mathrm{B}}}=\begin{cases} \frac{25}{4}\, \frac{{\left[f_{3/2}(z)\right]}^{2} f_{1/2}(z)}{\left[f_{3/2}(z)\right]^{3}} -\frac{15}{4}\,\frac{f_{5/2}(z)}{f_{3/2}(z)}, \\[2ex] \frac{\pi^2}{2}\, \frac{T}{T_{\mathrm{F}}}, \,\, T \ll T_{\mathrm{F}}. \end{cases} \end{equation}
In [18]:
Npoint =500
logzmax=27
logzmin=-2

#zlist=linspace(zmin,zmax,Npoint) #mintavételezési pontok legyártása
zlist=logspace(logzmin,logzmax,num=Npoint) #  z in logaritmic scale

Tlist=[]
cp=[]
for i in range(0,len(zlist)):
    z=zlist[i]
    
    try:
        poly3p2=-float(mpmath.polylog(1.5,-z).real)
        poly5p2=-float(mpmath.polylog(2.5,-z).real)
        poly1p2=-float(mpmath.polylog(.5,-z).real)
    except:
        poly1p2=fsz(.5,z)
        poly3p2=fsz(1.5,z)
        poly5p2=fsz(2.5,z)  
        
    #poly1p2=-float(mpmath.polylog(0.5,-z).real)      
    
    tt=(4/3/(sqrt(pi))/poly3p2)**(2/3) 
    #print(z,tt)
    Tlist.append(tt)    #   homerseklet   
    tmp2=25/4*poly5p2**2*poly1p2/(poly3p2)**3-15/4*poly5p2/poly3p2  # c_p fajho
    cp.append(tmp2)     

    
#  Low temperature approximation 

Npoint =20
tmaxL=0.35
Tlist_Low=linspace(0.0,tmaxL,Npoint) #mintavételezési pontok legyártása

cp_approxL=[]

for i in range(0,len(Tlist_Low)):
    
    tt=Tlist_Low[i]    
    cp_approxL.append(pi**2/2 *tt )    # energia
    
#  High temperature approximation 

Npoint =30
tminH=1.3
tmaxH=Tlist[0]

Tlist_High=linspace(tminH,tmaxH,Npoint) #mintavételezési pontok legyártása
cp_approxH=[]

for i in range(0,len(Tlist_High)):
    
    tt=Tlist_High[i]
    cp_approxH.append(5/2*(1-tt**(-3/2)/2/sqrt(2*pi)))    # c_p fajho
In [19]:
figsize(xfig_meret,yfig_meret)

plot(Tlist,cp,label='$C_p(T)$',lw=3,color='red',ls='-')
plot(Tlist_Low,cp_approxL,
     label=r'$C_{p,\mathrm{low}}(t) \approx \frac{\pi^2}{2} \, t $',
     lw=1,ls='-',marker='o',color='blue',markersize=4)
plot(Tlist_High,cp_approxH,color='green', lw=3,linestyle='--',
     label=r'$C_{p,\mathrm{high}}(t) \approx \frac{5}{2}\left(1-\frac{t^{-3/2}}{2\sqrt{2\pi}} \right)$')

legend(loc='lower right',fontsize=legend_meret)

xlabel('$t={T}/{T_\mathrm{F}}$',fontsize=xylabel_meret)
ylabel(r'$\frac{C_p}{N k_B}$',fontsize=xylabel_meret,rotation ='horizontal')  # Kell a 'r' az elejen!!!!
xticks(fontsize=xyticks_meret)
yticks(fontsize=xyticks_meret);

#xlim(0,tmaxH)
xlim(0,4.)
ylim(0,2.5)
ax = gca()
ax.yaxis.set_label_coords(-.1, 0.53)  #  ylabel position 
grid()

#savefig('Fig_Fermi_gas/fig_Fermi-gaz_50.eps');  # Abra kimentese

$\frac{C_p}{C_V}$ hőmérsékletfüggése:

\begin{equation} \frac{C_p}{C_V} = \begin{cases} \frac{5}{3}\,\frac{f_{5/2}(z) f_{1/2}(z)}{\left[f_{3/2}(z)\right]^{2}}, \\[2ex] 1+\frac{\pi^2}{3} {\left(\frac{T}{T_{\mathrm{F}}}\right)}^2, \,\, T \ll T_{\mathrm{F}}. \end{cases} \end{equation}
In [20]:
Npoint =500
logzmax=27
logzmin=-2

#zlist=linspace(zmin,zmax,Npoint) #mintavételezési pontok legyártása
zlist=logspace(logzmin,logzmax,num=Npoint) #  z in logaritmic scale


Tlist=[]
cp_cV=[]
for i in range(0,len(zlist)):
    z=zlist[i]
    
    try:
        poly3p2=-float(mpmath.polylog(1.5,-z).real)
        poly5p2=-float(mpmath.polylog(2.5,-z).real)
        poly1p2=-float(mpmath.polylog(.5,-z).real)
    except:
        poly1p2=fsz(.5,z)
        poly3p2=fsz(1.5,z)
        poly5p2=fsz(2.5,z)     
    
    tt=(4/3/(sqrt(pi))/poly3p2)**(2/3) 
    Tlist.append(tt)    #   homerseklet
    cp_cV.append(5/3*poly5p2*poly1p2/(poly3p2)**2) # c_p/c_V arany
    
    
#  Low temperature approximation 

Npoint =10
tmaxL=0.3
Tlist_Low=linspace(0.0,tmaxL,Npoint) #mintavételezési pontok legyártása

cp_cV_approxL=[]

for i in range(0,len(Tlist_Low)):
    
    tt=Tlist_Low[i]    
    cp_cV_approxL.append(1+pi**2/3 *tt**2 )    # c_p/c_V fajho arany
    
#  High temperature approximation 

Npoint =20
tminH=1.2
tmaxH=Tlist[0]

Tlist_High=linspace(tminH,tmaxH,Npoint) #mintavételezési pontok legyártása
cp_cV_approxH=[]

for i in range(0,len(Tlist_High)):
    
    tt=Tlist_High[i]
    cp_cV_approxH.append(5/3*(1-tt**(-3/2)/3/sqrt(2*pi)))    # c_p/c_V fajho arany
In [21]:
figsize(xfig_meret,yfig_meret)

plot(Tlist,cp_cV,label=r'$\frac{C_p}{C_V}$',lw=3,color='red')
plot(Tlist_Low,cp_cV_approxL,
     label=r'$\frac{C_p}{C_V} \approx 1+\frac{\pi^2}{3} \, t^2 $',
     lw=1,ls='-',marker='o',color='blue',markersize=4)
plot(Tlist_High,cp_cV_approxH,color='green', lw=3,linestyle='--',
     label=r'$\frac{C_p}{C_V} \approx \frac{5}{3}\left(1-\frac{t^{-3/2}}{3\sqrt{2\pi}} \right)$')


legend(loc='lower right',fontsize=legend_meret)

axhline(y=1.666, xmin=0, xmax = 2, linewidth=2, ls='dashed', color='k')
#annotate(r'$\frac{5}{3}$',  xy=(1.1,1.66), xytext=(.15, 1.46),fontsize=legend_meret)


xlabel(r'$t={T}/{T_\mathrm{F}}$',fontsize=xylabel_meret)
ylabel(r'$\frac{C_p}{C_V}$',fontsize=xylabel_meret,rotation ='horizontal')  # Kell a 'r' az elejen!!!!
xticks(fontsize=xyticks_meret)
yticks(fontsize=xyticks_meret);

xlim(0,4)
ylim(0,5/3+0.1)
ax = gca()
ax.yaxis.set_label_coords(-.07, 0.52)  #  ylabel position 
grid()

#savefig('Fig_Fermi_gas/fig_Fermi-gaz_70.eps');  # Abra kimentese

Adiabatikus kompresszibilitás hőmérsékletfüggése:

$\kappa_S =-\frac{1}{V}\, \left. \frac{\partial V}{\partial p}\right| _{S,N}$

\begin{equation} \kappa_S(T) =\frac{1}{n k_{\mathrm{B}}T_\mathrm{F}}\, \begin{cases} \frac{3 f_{3/2}(z)}{5 f_{5/2}(z)}\, \left(\frac{T}{T_{\mathrm{F}}}\right)^{{\scriptscriptstyle -1}}, \\[2ex] \frac{3}{2}\, \left[1- \frac{5 \pi^2}{12}\, {\left(\frac{T}{T_{\mathrm{F}}}\right)}^2 \right], \,\, T \ll T_\mathrm{F} , \end{cases} \end{equation}

ahol $n=N/V$.

In [22]:
Npoint =500
logzmax= 7
logzmin=-1

#zlist=linspace(zmin,zmax,Npoint) #mintavételezési pontok legyártása
zlist=logspace(logzmin,logzmax,num=Npoint) #  z in logaritmic scale

Tlist=[]
kappa_S=[]
for i in range(0,len(zlist)):
    z=zlist[i]
    
    try:
        poly3p2=-float(mpmath.polylog(1.5,-z).real)
        poly5p2=-float(mpmath.polylog(2.5,-z).real)
        poly1p2=-float(mpmath.polylog(.5,-z).real)
    except:
        poly1p2=fsz(.5,z)
        poly3p2=fsz(1.5,z)
        poly5p2=fsz(2.5,z)         
    
    tt=(4/3/(sqrt(pi))/poly3p2)**(2/3) 
    Tlist.append(tt)    #   homerseklet
    kappa_S.append(3/5*poly3p2/poly5p2/tt) 
    # kappa_S kompreszibilitas
    
#  Low temperature approximation 

Npoint =10
tmaxL=0.25
Tlist_Low=linspace(0.0,tmaxL,Npoint) #mintavételezési pontok legyártása

kappaS_approxL=[]

for i in range(0,len(Tlist_Low)):
    
    tt=Tlist_Low[i]    
    kappaS_approxL.append(3/2*(1-5*pi**2/12 *tt**2) )    # kappa_S
    
#  High temperature approximation 

Npoint =20
tminH=1.2
tmaxH=Tlist[0]

Tlist_High=linspace(tminH,tmaxH,Npoint) #mintavételezési pontok legyártása
kappaS_approxH=[]

for i in range(0,len(Tlist_High)):
    
    tt=Tlist_High[i]
    kappaS_approxH.append(3/5/tt )    # kappa_S
In [23]:
figsize(xfig_meret,yfig_meret)

plot(Tlist,kappa_S,label=r'$\kappa_S(T)$',lw=3,color='red')
plot(Tlist_Low,kappaS_approxL,
     label=r'$\kappa_{S,\mathrm{low}} \approx \frac{3}{2} \left(1-\frac{5\pi^2}{12} \, t^2 \right)$',
     lw=1,ls='-',marker='o',color='blue',markersize=4)
plot(Tlist_High,kappaS_approxH,color='green', lw=3,linestyle='--',
     label=r'$\kappa_{S,\mathrm{high}} \approx \frac{3}{5t}$')


legend(loc='upper right',fontsize=legend_meret)

xlabel('$t={T}/{T_\mathrm{F}}$',fontsize=xylabel_meret)
ylabel(r'$\kappa_S(T)\, n k_B T_\mathrm{F}$',fontsize=xylabel_meret,rotation ='vertical')  
# Kell a 'r' az elejen!!!!
xticks(fontsize=xyticks_meret)
yticks(fontsize=xyticks_meret);

xlim(0,tmaxH)
ylim(0,1.55)
ax = gca()
ax.yaxis.set_label_coords(-.05, 0.45);  #  ylabel position 
grid()

#savefig('Fig_Fermi_gas/fig_Fermi-gaz_55.eps');  # Abra kimentese

Izotermikus kompresszibilitás hőmérsékletfüggése:

$\kappa_T =-\frac{1}{V}\, \left. \frac{\partial V}{\partial p}\right| _{T,N}$

\begin{equation} \kappa_T(T) =\frac{1}{n k_{\mathrm{B}}T_\mathrm{F}}\, \begin{cases} \frac{f_{1/2}(z)}{f_{3/2}(z)}\, \left(\frac{T}{T_{\mathrm{F}}}\right)^{{\scriptscriptstyle -1}}, \\[2ex] \frac{3}{2}\, \left[1- \frac{\pi^2}{12}\, {\left(\frac{T}{T_{\mathrm{F}}}\right)}^2 \right], \,\, T \ll T_\mathrm{F} , \end{cases} \end{equation}

ahol $n= N/V$.

In [24]:
Npoint =500
logzmax= 7
logzmin=-1

#zlist=linspace(zmin,zmax,Npoint) #mintavételezési pontok legyártása
zlist=logspace(logzmin,logzmax,num=Npoint) #  z in logaritmic scale

Tlist=[]
kappa_T=[]
for i in range(0,len(zlist)):
    z=zlist[i]
    
    try:
        poly3p2=-float(mpmath.polylog(1.5,-z).real)
        poly5p2=-float(mpmath.polylog(2.5,-z).real)
        poly1p2=-float(mpmath.polylog(.5,-z).real)
    except:
        poly1p2=fsz(.5,z)
        poly3p2=fsz(1.5,z)
        poly5p2=fsz(2.5,z)         
    
    tt=(4/3/(sqrt(pi))/poly3p2)**(2/3) 
    Tlist.append(tt)    #   homerseklet
    kappa_T.append(poly1p2/poly3p2/tt) 
    # kappa_S kompreszibilitas
    
#  Low temperature approximation 

Npoint =10
tmaxL=0.5
Tlist_Low=linspace(0.0,tmaxL,Npoint) #mintavételezési pontok legyártása

kappaT_approxL=[]

for i in range(0,len(Tlist_Low)):
    
    tt=Tlist_Low[i]    
    kappaT_approxL.append(3/2*(1-pi**2/12 *tt**2) )    # kappa_S
    
#  High temperature approximation 

Npoint =20
tminH=1.7
tmaxH=Tlist[0]

Tlist_High=linspace(tminH,tmaxH,Npoint) #mintavételezési pontok legyártása
kappaT_approxH=[]

for i in range(0,len(Tlist_High)):
    
    tt=Tlist_High[i]
    kappaT_approxH.append(1/tt )    # kappa_S
In [25]:
figsize(xfig_meret,yfig_meret)

plot(Tlist,kappa_T,label=r'$\kappa_T(T)$',lw=3,color='red')
plot(Tlist_Low,kappaT_approxL,
     label=r'$\kappa_{T,\mathrm{low}} \approx \frac{3}{2} \left(1-\frac{\pi^2}{12} \, t^2 \right)$',
     lw=1,ls='-',marker='o',color='blue',markersize=4)
plot(Tlist_High,kappaT_approxH,color='green', lw=3,linestyle='--',
     label=r'$\kappa_{T,\mathrm{high}} \approx \frac{1}{t}$')


legend(loc='upper right',fontsize=legend_meret)

xlabel('$t={T}/{T_\mathrm{F}}$',fontsize=xylabel_meret)
ylabel(r'$\kappa_T(T)\, n k_B T_\mathrm{F}$',fontsize=xylabel_meret,rotation ='vertical')  
# Kell a 'r' az elejen!!!!
xticks(fontsize=xyticks_meret)
yticks(fontsize=xyticks_meret);

xlim(0,tmaxH)
ylim(0,1.6)
ax = gca()
ax.yaxis.set_label_coords(-.05, 0.45);  #  ylabel position 
grid()

#savefig('Fig_Fermi_gas/fig_Fermi-gaz_60.eps');  # Abra kimentese

Hőtágulási együttható hőmérsékletfüggése:

$\alpha_T =\frac{1}{V}\, \left. \frac{\partial V}{\partial T}\right| _{p,N}$

\begin{equation} \alpha_{T}(T) =\begin{cases} \frac{1}{T}\, \left(\frac{5}{2}\, \frac{f_{5/2}(z) f_{1/2}(z)}{\left[f_{3/2}(z)\right]^{2}}-\frac{3}{2}\right), \\[2ex] \frac{\pi^2}{2}\, \frac{T}{T_\mathrm{F} }, \,\, T \ll T_\mathrm{F} , \end{cases} \end{equation}

Magashőmérsékleti közelítésben $\alpha_T^{\mathrm{klassz}}(T) = 1/T$.

In [26]:
Npoint =500
logzmax= 27
logzmin=-1

#zlist=linspace(zmin,zmax,Npoint) #mintavételezési pontok legyártása
zlist=logspace(logzmin,logzmax,num=Npoint) #  z in logaritmic scale

Tlist=[]
alpha=[]    
for i in range(0,len(zlist)):
    z=zlist[i]
    
    try:
        poly3p2=-float(mpmath.polylog(1.5,-z).real)
        poly5p2=-float(mpmath.polylog(2.5,-z).real)
        poly1p2=-float(mpmath.polylog(.5,-z).real)
    except:
        poly1p2=fsz(.5,z)
        poly3p2=fsz(1.5,z)
        poly5p2=fsz(2.5,z)       
    
    tt=(4/3/(sqrt(pi))/poly3p2)**(2/3) 
    Tlist.append(tt)    #   homerseklet
    alpha.append((5/2*poly5p2*poly1p2/(poly3p2)**2-3/2)/tt) 
    # alpha_T hotagulasi egyutthato 

#  Low temperature approximation 

Npoint =50
tmaxL=0.25
Tlist_Low=linspace(0.0,tmaxL,Npoint) #mintavételezési pontok legyártása

alpha_approxL=[]

for i in range(0,len(Tlist_Low)):
    
    tt=Tlist_Low[i]    
    alpha_approxL.append(pi**2/2 *tt )    # alpha
    
#  High temperature approximation 

Npoint =50
tminH=1.2
tmaxH=Tlist[0]

Tlist_High=linspace(tminH,tmaxH,Npoint) #mintavételezési pontok legyártása
alpha_approxH=[]

for i in range(0,len(Tlist_High)):
    
    tt=Tlist_High[i]
    alpha_approxH.append(1/tt -5*tt**(-5/2)/6/sqrt(2*pi) )    # alpha
    
    
In [27]:
figsize(xfig_meret,yfig_meret)

plot(Tlist,alpha,label=r'$\alpha_T(T)$',lw=3,color='red')
plot(Tlist_Low,alpha_approxL,
     label=r'$\alpha_{T,\mathrm{low}} \approx  \frac{\pi^2}{2} \, t$',
     lw=1,ls='-',marker='o',color='blue',markersize=4)
plot(Tlist_High,alpha_approxH,color='green', lw=3,linestyle='--',
     label=r'$\alpha_{T,\mathrm{high}} \approx \frac{1}{t}-\frac{5 t^{-5/2}}{6\sqrt{2\pi}}$')


legend(loc='upper right',fontsize=legend_meret)

xlabel('$t={T}/{T_\mathrm{F}}$',fontsize=xylabel_meret)
ylabel(r'$\alpha_T(T)\, n k_B T_\mathrm{F}$',fontsize=xylabel_meret,rotation ='vertical')  
# Kell a 'r' az elejen!!!!
xticks(fontsize=xyticks_meret)
yticks(fontsize=xyticks_meret);

xlim(0,tmaxH)
ylim(0,1.1)
ax = gca()
ax.yaxis.set_label_coords(-.05, 0.45);  #  ylabel position 
grid()

#savefig('Fig_Fermi_gas/fig_Fermi-gaz_65.eps');  # Abra kimentese

Hangsebesség hőmérsékletfüggése:

$v_{\mathrm{hang}}(T) =\sqrt{\left. \frac{\partial p}{\partial \varrho}\right|_{S,N}} = \sqrt{\frac{V}{m N}\, \frac{1}{\kappa_S}}$, ahol $\varrho = m N/V$ a tömegsűrűség.

\begin{equation} \frac{v_{\mathrm{hang}}(T)}{\sqrt{\frac{k_{\mathrm{B}}T_\mathrm{F}}{m}}} = \, \begin{cases} \sqrt{\frac{5 f_{5/2}(z)}{3 f_{3/2}(z)}\,\left(\frac{T}{T_{\mathrm{F}}}\right)^{{\scriptscriptstyle -1}}} , \\[2ex] \frac{2}{\sqrt{6}}\, \left[1+\frac{5\pi^2}{24} {\left(\frac{T}{T_{\mathrm{F}}}\right)}^2\right], \,\, T \ll T_\mathrm{F} , \end{cases} \end{equation}
In [28]:
Npoint =500
logzmax= 27
logzmin=-1

#zlist=linspace(zmin,zmax,Npoint) #mintavételezési pontok legyártása
zlist=logspace(logzmin,logzmax,num=Npoint) #  z in logaritmic scale

Tlist=[]
vhang=[]    
for i in range(0,len(zlist)):
    z=zlist[i]
    
    try:
        poly3p2=-float(mpmath.polylog(1.5,-z).real)
        poly5p2=-float(mpmath.polylog(2.5,-z).real)
    except:
        poly3p2=fsz(1.5,z)
        poly5p2=fsz(2.5,z)   
            
    tt=(4/3/(sqrt(pi))/poly3p2)**(2/3) 
    Tlist.append(tt)    #   homerseklet
    vhang.append(sqrt(5/3*tt*poly5p2/poly3p2)) # v_hang  hangsebesseg  
    
#  Low temperature approximation 

Npoint =20
tmaxL=0.45
Tlist_Low=linspace(0.0,tmaxL,Npoint) #mintavételezési pontok legyártása

vhang_approxL=[]

for i in range(0,len(Tlist_Low)):
    
    tt=Tlist_Low[i]    
    vhang_approxL.append(2/sqrt(6)*(1+5*pi**2/24 *tt**2) )    # vhang
    
#  High temperature approximation 

Npoint =50
tminH=0.2
tmaxH=Tlist[0]

Tlist_High=linspace(tminH,tmaxH,Npoint) #mintavételezési pontok legyártása
vhang_approxH=[]

for i in range(0,len(Tlist_High)):
    
    tt=Tlist_High[i]
    vhang_approxH.append(sqrt(10/3/pi)/12*(1/tt + 12* sqrt(tt*pi/2)))    # vhang
        
In [29]:
figsize(xfig_meret,yfig_meret)

plot(Tlist,vhang,label=r'$v_{\mathrm{hang}}(T)$',lw=3,color='red')
plot(Tlist_Low,vhang_approxL,
     label=r'$v_{\mathrm{hang,low}} \approx  \frac{2}{\sqrt{6}}\, \left(1+\frac{5\pi^2}{24} t^2\right)$',
     lw=1,ls='-',marker='o',color='blue',markersize=4)
plot(Tlist_High,vhang_approxH,color='green', lw=3,linestyle='--',
     label=r'$v_{\mathrm{hang,high}} \approx \sqrt{\frac{5 t}{3}}+ \frac{1}{6}\, \sqrt{\frac{5}{6\pi}}\, \frac{1}{t}$')


legend(loc='lower right',fontsize=legend_meret)

xlabel('$t={T}/{T_\mathrm{F}}$',fontsize=xylabel_meret)
ylabel(r'$v_{\mathrm{hang}}(T)/\sqrt{k_B T_\mathrm{F}/m} $',fontsize=xylabel_meret,rotation ='vertical')  
# Kell a 'r' az elejen!!!!
xticks(fontsize=xyticks_meret)
yticks(fontsize=xyticks_meret);

#xlim(0,tmaxH)
xlim(0,2)
ylim(0,2)
ax = gca()
ax.yaxis.set_label_coords(-.05, 0.45);  #  ylabel position 
grid()

#savefig('Fig_Fermi_gas/fig_Fermi-gaz_75.eps');  # Abra kimentese

Irodalom:

R. K. Pathria: Statistical Mechanics, 2nd Edition, 1996, Bunerworth-Heinemann Linacre House

Linda E. Reichl: A Modern Course in Statistical Physics 2rd Edition, 1998, Wiley-VCH

Franz Schwabl: Statistical Mechanics, 2000, Springer-Verlag, Berlin

K. Huang: Statistical Mechanics, 2nd Edition, 1987, John Wiley & Sons